package com.tdd.mockexample;

import static org.mockito.Matchers.anyString;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

import org.junit.Test;

public class LoginServiceTest {
	private Account account;
	private AccountRepoisitory repository;

	@Test
	public void loginWithCorrectPasswordAndAccount() {
		account = mock(Account.class);
		repository = mock(AccountRepoisitory.class);

		when(repository.findAccountNamed(anyString())).thenReturn(account);
		when(account.passwordMatches(anyString())).thenReturn(true);

		LoginService loginService = new LoginService(repository);

		loginService.login("account", "password");

		verify(account, times(1)).setLoggedIn(true);
	}
}
